package enrique.kurso.lecionoj;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Random;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Toast;
import enrique.kurso.R;

public class Leciono0102 extends Activity implements OnClickListener{

	private MediaPlayer mp;
	TextView aciertos,fallos,porcentaje,restantes;
	ImageButton reproducir,repetir;
	Button boton1,boton2,boton3,boton4,boton5,boton6;
	OnClickListener pulsar;
	int posicion,aciertosValor=0,fallosValor=0,porcentajeValor=0,restantesValor=54,identificadorGrabacion;
	ArrayList<Integer> posiciones,numerosGeneral;
	int duration = 3;
	Boolean terminado = false;
	ArrayList<String> palabras = new ArrayList<String>();
	HashMap<String, Integer> palabrasGrabacion = new HashMap<String, Integer>();
	String palabras2[] = {"ĝiri","feino","kvita","bela","knavo","feŭdo","ago","ie","oro","pezo","ĉio","prujno","eskalo","ravo","ami","kanabo","iam",
			"ŝerco","ĵurnalo","felto","roko","adiaŭ","hoko","alto","ĝusta","bona","ame","ero","ia","peco","juro","ĉelo","ĝene","ĵuro","selo","aŭto",
			"peso","gusta","ju","ŝia","scii","tio","celo","scienco","diri","granda","eĥo","horo","ĝeni","ĥoro","hajlo","okazi","peĉo","ruino"};
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.leciono0102);
		boton1 = (Button) findViewById(R.id.primerBoton);  boton2 = (Button) findViewById(R.id.segundoBoton);
		boton3 = (Button) findViewById(R.id.tercerBoton);  boton4 = (Button) findViewById(R.id.cuartoBoton);
		boton5 = (Button) findViewById(R.id.quintoBoton);  boton6 = (Button) findViewById(R.id.sextoBoton);
		boton1.setOnClickListener(this); boton2.setOnClickListener(this); boton3.setOnClickListener(this);
		boton4.setOnClickListener(this); boton5.setOnClickListener(this); boton6.setOnClickListener(this);
		aciertos = (TextView) findViewById(R.id.aciertos);  fallos = (TextView) findViewById(R.id.fallos);
		porcentaje = (TextView) findViewById(R.id.porcentaje); restantes = (TextView) findViewById(R.id.palabrasRestantes);
		repetir =  (ImageButton) findViewById(R.id.repetir);
		numerosGeneral = new ArrayList<Integer>();
		repetir.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				mp.start();
				
			}
		});
		reproducir = (ImageButton) findViewById(R.id.reproducir);
		
		inicializaPalabrasGrabacion();
		boolean flag;
		int aciertos=0;
		posiciones = getRandomNumbers();
		
		reproduce(posiciones);
	}
	
	public void procesarPulsacion(View v){
		Boolean fallo = null;
		// TODO Auto-generated method stub
		String boton = (String) ((Button)v).getText();
		String repro = (palabras2[posiciones.get(posicion)]);
		//				if(((Button)arg0).getText().equals((palabras2[posiciones.get(posicion)]))){
//			arg0.setVisibility(View.INVISIBLE);
//			aciertosValor++;
//		}
		if(((Button)v).getText().equals((palabras2[posiciones.get(posicion)]))){
			Log.e("****onClick","acierto");
			aciertosValor++;
			mp.release();
			fallo = false;
			restantesValor--;
			posiciones.set(posicion, 0);
			((Button)v).setVisibility(View.INVISIBLE);				
			aciertos.setText(aciertosValor+"");
			restantes.setText(restantesValor+"");
		}else{
			Log.e("****onClick","FALLO");
			fallosValor++;
			fallo = true;
			fallos.setText(fallosValor+"");
		}
		float aux2 = (aciertosValor / (aciertosValor+fallosValor));
		float aux3 = 1/2;
		Log.e("@@@@@######AUX2",aux2+"");
		Log.e("@@@@@######AUX2",aux3+"");
		porcentajeValor = (int) (aux2*100);
		porcentaje.setText(porcentajeValor+"%");
		
		Log.e("@@@@@######",porcentajeValor+"");
		int aux = aciertosValor%6;
		aux = aux *1;
		if(aciertosValor%6 != 0 || aciertosValor == 0){
			Log.e("****onClick","llamo a reproduce porque xk quedan botones para acertar");
			reproduce(posiciones);
		}else{
			if(aciertosValor<54 && !fallo){
				Log.e("****onClick","llamo a generar nuevas palabras");
				posiciones = getRandomNumbers();
				Log.e("****onClick","llamo a reproduce se crean nuevos botones");
				reproduce(posiciones);
				
				

			}else if(aciertosValor == 54){
				if(porcentajeValor < 70){
					Toast toast = Toast.makeText(getContext(), R.string.felicitaciones,Toast.LENGTH_LONG);
					toast.show();
					terminado = true;
				}else{
					Toast toast = Toast.makeText(getContext(), R.string.noFelicitaciones,Toast.LENGTH_LONG);
					toast.show();
					terminado = true;
				}
			}	
		}
	}

	@Override
	public void onClick(View v) {
		
		if(v == reproducir){
			if(terminado){
				Intent i = new Intent(getContext(), Leciono0102.class);
				
				startActivity(i);
			}
		}else{
		    procesarPulsacion(v);
			
				
		}	
	}

	
	
	
	private Context getContext() {
		  return this;
	}
	
	private void inicializaPalabrasGrabacion(){		
		palabrasGrabacion.put("ĝiri", R.raw.gxiri);
		palabrasGrabacion.put("feino", R.raw.feino);
		palabrasGrabacion.put("kvita", R.raw.kvita);
		palabrasGrabacion.put("bela", R.raw.bela);
		palabrasGrabacion.put("knavo", R.raw.knabo);
		palabrasGrabacion.put("feŭdo", R.raw.feuxdo);		
		palabrasGrabacion.put("ago", R.raw.ago);
		palabrasGrabacion.put("ie", R.raw.ie);
		palabrasGrabacion.put("oro", R.raw.oro);
		palabrasGrabacion.put("pezo", R.raw.pezo);
		palabrasGrabacion.put("ĉio", R.raw.cxio);
		palabrasGrabacion.put("prujno", R.raw.prujno);		
		palabrasGrabacion.put("eskalo", R.raw.eskalo);
		palabrasGrabacion.put("ravo", R.raw.ravo);
		palabrasGrabacion.put("ami", R.raw.ami);
		palabrasGrabacion.put("kanabo", R.raw.kanabo);
		palabrasGrabacion.put("iam", R.raw.iam);
		palabrasGrabacion.put("ŝerco", R.raw.sxerco);		
		palabrasGrabacion.put("ĵurnalo", R.raw.jxurnalo);
		palabrasGrabacion.put("felto", R.raw.felto);
		palabrasGrabacion.put("roko", R.raw.roko);
		palabrasGrabacion.put("adiaŭ", R.raw.adiaux);
		palabrasGrabacion.put("hoko", R.raw.hoko);
		palabrasGrabacion.put("alto", R.raw.alto);		
		palabrasGrabacion.put("ĝusta", R.raw.gxusta);
		palabrasGrabacion.put("bona", R.raw.bona);
		palabrasGrabacion.put("ame", R.raw.ame);
		palabrasGrabacion.put("ero", R.raw.ero);
		palabrasGrabacion.put("ia", R.raw.ia);
		palabrasGrabacion.put("peco", R.raw.peco);		
		palabrasGrabacion.put("juro", R.raw.juro);
		palabrasGrabacion.put("ĉelo", R.raw.cxelo);
		palabrasGrabacion.put("ĝene", R.raw.gxene);
		palabrasGrabacion.put("ĵuro", R.raw.jxuro);
		palabrasGrabacion.put("selo", R.raw.selo);
		palabrasGrabacion.put("aŭto", R.raw.auxto);		
		palabrasGrabacion.put("peso", R.raw.peso);
		palabrasGrabacion.put("gusta", R.raw.gusta);
		palabrasGrabacion.put("ju", R.raw.ju);
		palabrasGrabacion.put("ŝia", R.raw.sxia);
		palabrasGrabacion.put("scii", R.raw.scii);
		palabrasGrabacion.put("tio", R.raw.tio);		
		palabrasGrabacion.put("celo", R.raw.celo);
	
		palabrasGrabacion.put("scienco", R.raw.scienco);
		palabrasGrabacion.put("diri", R.raw.diri);
		palabrasGrabacion.put("granda", R.raw.granda);
		palabrasGrabacion.put("eĥo", R.raw.ehxo);
		palabrasGrabacion.put("horo", R.raw.horo);	
		palabrasGrabacion.put("ĝeni", R.raw.gxeni);
		palabrasGrabacion.put("ĥoro", R.raw.hxoro);
		palabrasGrabacion.put("hajlo", R.raw.hajlo);
		palabrasGrabacion.put("okazi", R.raw.okazi);
		palabrasGrabacion.put("peĉo", R.raw.pecxo);
		palabrasGrabacion.put("ruino", R.raw.ruino);
		
	}
	
	private ArrayList<Integer> getRandomNumbers(){
		Log.e("****getRandomNumbers","COJO NUMEROS ALEATORIOS PARA COGER PALABRAS ALEATORIAS");
		ArrayList<Integer> numeros = new ArrayList<Integer>();
		Random generator = new Random();
		for(int i=0;i<6;i++){
			int numero = generator.nextInt(palabrasGrabacion.size());
			if(!numerosGeneral.contains(numero)){
				numeros.add(numero);
				numerosGeneral.add(numero);
			}else{
				i--;
			}
		}
		return numeros;
	}
	
	private void reproduce(ArrayList<Integer> posiciones){
		Random generador = new Random();

		posicion = generador.nextInt(5);
		Integer me;
		String aux = palabras2[posiciones.get(0)];
		if(aciertosValor%6 == 0){
			Log.e("****reproduce","PRIMERA VEZ INICILIZO TEXTO BOTONES");
			boton1.setText(palabras2[posiciones.get(0)]); boton1.setVisibility(View.VISIBLE);
			boton2.setText(palabras2[posiciones.get(1)]); boton2.setVisibility(View.VISIBLE); 
			boton3.setText(palabras2[posiciones.get(2)]); boton3.setVisibility(View.VISIBLE);
			boton4.setText(palabras2[posiciones.get(3)]); boton4.setVisibility(View.VISIBLE);
			boton5.setText(palabras2[posiciones.get(4)]); boton5.setVisibility(View.VISIBLE);
			boton6.setText(palabras2[posiciones.get(5)]); boton6.setVisibility(View.VISIBLE);
		}	
		while(posiciones.get(posicion) == 0){
			if(posicion<5){
				posicion++;
			}else{
				posicion=0;
			}
		}	
		identificadorGrabacion = palabrasGrabacion.get(palabras2[posiciones.get(posicion)]);
		mp = MediaPlayer.create(getContext(), identificadorGrabacion);
		mp.start();
		
		
	}
}
